<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Traits\HasUniqueSlug;

class Article extends Model
{
    // 添加 HasFactory 和 HasUniqueSlug 特性
    use HasFactory, HasUniqueSlug;

    // 定义可批量赋值的字段
    protected $fillable = [
        'title',
        'slug',
        'content',
        'summary',
        'cover',
        'user_id',
        'category_id',
        'status',
        'view_count',
        'like_count',
        'is_top',
        'seo_title',
        'seo_description',
        'seo_keywords',
        'published_at',
    ];

    /**
     * 定义文章与分类之间的一对多关系（属于某个分类）。
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function category()
    {
        return $this->belongsTo(Category::class);
    }

    /**
     * 定义文章与标签之间的多对多关系。
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }

    /**
     * 定义文章与用户（作者）之间的一对多关系（属于某个用户）。
     *
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}
